package com.thoughtworks.webanalyticsautomation.scriptrunner.helper;
import com.thoughtworks.webanalyticsautomation.common.BROWSER;
import org.apache.log4j.Logger;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.SkipException;
/**
* Created by: Anand Bagmar
* Email: abagmar@gmail.com
* Date: Jan 4, 2011
* Time: 10:38:05 AM
*
* Copyright 2010 Anand Bagmar (abagmar@gmail.com). Distributed under the Apache 2.0 License
*/
public class WebDriverScriptRunnerHelper extends ScriptRunnerHelper {
private WebDriver driver;
public WebDriverScriptRunnerHelper(Logger logger, BROWSER browser, String baseURL) {
super(logger,browser, baseURL);
}
@Override
public void startDriver() {
String os = System.getProperty("os.name").toLowerCase();
logger.info ("Starting WebDriver on OS: " + os + " for browser: " + browser.name());
if (browser.equals(BROWSER.firefox)) {
DesiredCapabilities capabilities = new DesiredCapabilities();
instantiateFireFoxDriver(capabilities);
}
else if (browser.equals(BROWSER.iehta)) {
if (!os.contains("win")) {
throw new SkipException("Skipping this test as Internet Explorer browser is NOT available on " + os);
}
driver = new InternetExplorerDriver();
driver.get(BASE_URL);
} else if (browser.equals(BROWSER.chrome)) {
driver = new ChromeDriver();
driver.get(BASE_URL);
}
logger.info ("Driver started: " + browser.name());
logger.info ("Page title: " + driver.getTitle());
}
private void instantiateFireFoxDriver(DesiredCapabilities capabilities) {
driver = new FirefoxDriver(capabilities);
driver.get(BASE_URL);
}
@Override
public void startDriverUsingProxy(Proxy proxy) {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);
instantiateFireFoxDriver(capabilities);
}
@Override
public void stopDriver() {
if (null != this.driver) {
driver.close();
driver.quit();
}
}
@Override
public Object getDriverInstance() {
if (null == driver) {
logger.info("Driver is null");
}
return driver;
}
}